Software applications can be developed to meet a number of software requirements. In general, a requirement is a singular documented need of what a particular product or service should provide or perform. Software requirements may identify a necessary attribute, capability or characteristic of a system in order for the system to have value and utility to a user. In particular, software requirements may include functional requirements, non-functional requirements, and/or constraint requirements. Software requirements are typically used by developers to implement useful and helpful software applications or services for a subset of users.
Developing requirements can be divided into a number of phases, including requirements elicitation (e.g., gathering the requirements from stakeholders), analysis (e.g., checking for consistency and completeness), specification (e.g., documenting the requirements), and validation (e.g., making sure the specified requirements are correct). The data gathered to create requirements or the requirements themselves may be used as inputs into the design of new products and/or services. Accordingly, developers can implement products and services that meet or exceed particular requirements criteria.